﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Siav
{
    public partial class frmMaterial : Form
    {
        public frmMaterial()
        {
            InitializeComponent();
        }

        public void LimpaCampos()
        {
            Validacoes.LimpaCamposFormulario(Controls);
            tDescricao.Focus();
        }
        public void CarregaProdutos()
        {
            lstProdutos.Items.Clear();
            using (SiavEntities Entidades = new SiavEntities())
            {
                var Prods = (from p in Entidades.Material
                             select p).ToList();
                foreach (Material Pig in Prods)
                {
                    ListViewItem item = new ListViewItem();
                    item.Text = Pig.Codigo.ToString();
                    item.SubItems.Add(Pig.Descricao);
                    lstProdutos.Items.Add(item);
                }
            }
            LimpaCampos();
        }


        private void frmMaterial_Load(object sender, EventArgs e)
        {
            CarregaProdutos();
        }

        private void btnSalvar_Click_1(object sender, EventArgs e)
        {
            using (SiavEntities Entidades = new SiavEntities())
            {
                if (tCodigo.Text == "")
                {
                    try
                    {
                        Material Pig = new Material();
                        Pig.Descricao = tDescricao.Text;
                        Entidades.AddObject("Material", Pig);
                        Entidades.SaveChanges();
                        CarregaProdutos();
                    }
                    catch
                    {
                        MessageBox.Show("Erro ao inserir o Material...", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }

                }
                else
                {
                    int Codigo = int.Parse(tCodigo.Text);
                    var Pig = (from p in Entidades.Material
                               where p.Codigo.Equals(Codigo)
                               select p).First();
                    Pig.Descricao = tDescricao.Text;
                    Entidades.SaveChanges();
                    CarregaProdutos();
                }
            }
        }

        private void btnNovo_Click_1(object sender, EventArgs e)
        {
            LimpaCampos();
        }

        private void btnExcluir_Click(object sender, EventArgs e)
        {
            using (SiavEntities Entidades = new SiavEntities())
            {
                if (tCodigo.Text != "")
                {
                    int Codigo = int.Parse(tCodigo.Text);
                    if (MessageBox.Show("Tem certeza que deseja excluir o item selecionado?", "Confirmação", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        var Excluir = (from Pro in Entidades.Material
                                       where Pro.Codigo.Equals(Codigo)
                                       select Pro).First();

                        Entidades.DeleteObject(Excluir);
                        Entidades.SaveChanges();
                        MessageBox.Show("Item Excluido com sucesso", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        CarregaProdutos();
                    }
                }
            }
        }

        private void btnSair_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void lstProdutos_SelectedIndexChanged(object sender, EventArgs e)
        {
            using (SiavEntities Entidades = new SiavEntities())
            {
                try
                {
                    int pcodigo = int.Parse(lstProdutos.SelectedItems[0].Text.ToString());
                    var Valor = (from v in Entidades.Material
                                 where v.Codigo.Equals(pcodigo)
                                 select v).First();
                    tCodigo.Text = Valor.Codigo.ToString();
                    tDescricao.Text = Valor.Descricao;
                }
                catch 
                {
                	
                }
                
                
            }
        }

        private void frmMaterial_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.F10:
                    btnSalvar_Click_1(sender, e);
                    break;
                case Keys.F1:
                    btnNovo_Click_1(sender, e);
                    break;
                case Keys.Escape:
                    btnSair_Click(sender, e);
                    break;
                case Keys.F12:
                    btnExcluir_Click(sender, e);
                    break;
            }
        }
    }
}
